package me.alex.learnkotlin.learnKT2

/**
 * 学习面向对象编程
 */
fun main() {
    //1.0 对象类实例化 不需要new
    val p = Person("Jack", 19)
    p.eat()

    //1.1 构造方法
    println("=====================分割线====================")
    val s1 = Student()//0参构造
    val s2 = Student("jack", 19)//2参构造函数
    val s3 = Student("a456", 2, "Jack", 19)

    //1.3 接口
    doStudy(s2)

    //1.4 函数修饰
    /**
     * 修饰符                    Kotlin                         Java
     * public             对所有类可见(默认)                    所有类可见
     * private            只对当前类内部可见                    当前类可见
     * protected          只对当前类和子类可见             当前类/子类/同路径包下可见
     * internal           只对同一模块中的类可见                   无
     * default                   无                     同一包路径下的类可见(默认)
     */
}

/**
 * 这里传入的是Study对象而不是Student对象
 * 是展示了多态 因为Student实现了Study接口,所以可以直接传入student对象 也叫面向接口编程
 */
fun doStudy(study: Study) {
    study.readBooks()
    study.doHomeWork()
}